﻿using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;

namespace WebApi
{
    /// <summary>
    /// 登录信息
    /// </summary>
    public class LoginInfo : BizBase
    {
        private readonly IHttpContextAccessor _context;
        /// <summary>
        /// LoginInfo
        /// </summary>
        /// <param name="context"></param>
        public LoginInfo(IHttpContextAccessor context)
        {
            _context = context;
        }
        #region  当前客户定制的功能
        /// <summary>
        /// 定制的功能,功能之间用"|"分隔开
        /// </summary>
        public string Module
        {
            get
            {
                return _context.HttpContext.User.FindFirst("Module")?.Value;
            }
        }
        #endregion

        #region 是否为超级管理员
        /// <summary>
        /// 是否为超级管理员
        /// </summary>
        public bool IsAdmin
        {
            get
            {
                return Convert.ToBoolean(_context.HttpContext.User.FindFirst("IsAdmin").Value);
            }
        }
        #endregion

        #region 用户登录名
        /// <summary>
        /// 用户登录名
        /// </summary>
        public string UserName
        {
            get
            {
                return _context.HttpContext.User.FindFirst("UserName")?.Value;
            }
        }
        #endregion

        #region 登录编码
        /// <summary>
        /// 登录编码
        /// </summary>
        public string LoginCode
        {
            get
            {

                return _context.HttpContext?.User.FindFirst("LoginCode")?.Value;

            }
        }
        #endregion

        #region 访客编码
        /// <summary>
        /// 访客编码
        /// </summary>
        public string VisitorCode
        {
            get
            {

                return _context.HttpContext?.User.FindFirst("VisitorCode")?.Value;

            }
        }
        #endregion

        #region 客户编码
        /// <summary>
        /// 客户编码
        /// </summary>
        public string CustCode
        {
            get
            {

                return _context.HttpContext?.User.FindFirst("CustCode")?.Value;
                
            }
        }
        #endregion

        public IHeaderDictionary Header
        {
            get
            {
                var providedApiKey = _context.HttpContext.Request;

                return providedApiKey.Headers;

            }
        }

        #region  公司名
        /// <summary>
        /// 公司名
        /// </summary>
        public string CompanyName
        {
            get
            {
                return _context.HttpContext.User.FindFirst("CompanyName")?.Value;
            }
        }
        #endregion

        #region  区号
        /// <summary>
        /// 区号
        /// </summary>
        public string AreaNum
        {
            get
            {
                return _context.HttpContext.User.FindFirst("AreaNum")?.Value;
            }
        }
        #endregion

        #region 角色编码
        /// <summary>
        /// 学校编码
        /// </summary>
        public string RoleCode
        {
            get
            {
                return _context.HttpContext.User.FindFirst("RoleCode")?.Value;
            }
        }
        #endregion

        #region  当前客户所在城市的区域
        /// <summary>
        /// 当前客户所在城市的区域,区域之间用"|"分隔开
        /// </summary>
        public int RolePriority
        {
            get
            {
                return Convert.ToInt32(_context.HttpContext.User.FindFirst("RolePriority"));
            }
        }
        #endregion

        #region  当前客户所在城市的区域
        /// <summary>
        /// 当前客户所在城市的区域,区域之间用"|"分隔开
        /// </summary>
        public string Areas
        {
            get
            {
                return _context.HttpContext.User.FindFirst("Areas")?.Value;
            }
        }
        #endregion

        #region 当前客户终端所属分类
        /// <summary>
        /// 当前客户终端所属分类,分类之间用"|"分隔开
        /// </summary>
        public string Types
        {
            get
            {
                return _context.HttpContext.User.FindFirst("Types")?.Value;
            }
        }
        #endregion

        #region GUID
        /// <summary>
        /// 客户标识GUID，用于终端识别，若终端无此Guid，则无法进行数据更新和程序无法正常运行
        /// </summary>
        public string Guid
        {
            get
            {
                return _context.HttpContext.User.FindFirst("Guid")?.Value;
            }
        }
        #endregion

        #region 权限
        /// <summary>
        /// 用户的登录权限
        /// </summary>
        public string UserAction
        {
            get
            {
                return _context.HttpContext.User.FindFirst("UserAction")?.Value;
            }
        }
        #endregion            

        #region 登录者的中文名字
        /// <summary>
        /// 非管理员的中文名字
        /// </summary>
        public string LoginName
        {
            get
            {
                return _context.HttpContext.User.FindFirst("LoginName")?.Value;
            }
        }
        #endregion

        #region 是否有多份报纸
        /// <summary>
        /// 是否有多份报纸
        /// </summary>
        public bool IsMagazine
        {
            get
            {
                return Convert.ToBoolean(_context.HttpContext.User.FindFirst("IsMagazine"));
            }
        }
        #endregion

        #region 是否具有混合功能
        /// <summary>
        /// 是否有多份报纸
        /// </summary>
        public bool IsMixedFunction
        {
            get
            {
                return Convert.ToBoolean(_context.HttpContext.User.FindFirst("IsMixedFunction"));
            }
        }
        #endregion

        #region 公司名简称
        /// <summary>
        /// 公司名简称
        /// </summary>
        public string CompanyShortName
        {
            get
            {
                return _context.HttpContext.User.FindFirst("CompanyShortName")?.Value;
            }
        }
        #endregion

        #region 网站标题
        /// <summary>
        /// 公司名简称
        /// </summary>
        public string WebsiteTitle
        {
            get
            {
                return _context.HttpContext.User.FindFirst("WebsiteTitle")?.Value;
            }
        }
        #endregion

        #region 网站底部信息
        /// <summary>
        /// 公司名简称
        /// </summary>
        public string WebsiteBotton
        {
            get
            {
                return _context.HttpContext.User.FindFirst("WebsiteBotton")?.Value;
            }
        }
        #endregion

        #region  当前客户定制的功能
        /// <summary>
        /// 定制的功能,功能之间用"|"分隔开
        /// </summary>
        public string Functions
        {
            get
            {
                return _context.HttpContext.User.FindFirst("Functions")?.Value;
            }
        }
        #endregion

        #region 部门
        public string FkDepartment
        {
            get
            {
                return _context.HttpContext.User.FindFirst("FkDepartment")?.Value;
            }
        }
        #endregion
    }
}
